package com.demo.steammanagement.model.vo;

import com.demo.steammanagement.common.BaseVO;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
import java.time.LocalDateTime;

/**
 * 请求VO，承载额外查询条件
 */
@Data
public class UserVO extends BaseVO {
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Long id;

    /**
     * 账号，不能为空且唯一
     */
    @NotBlank(message = "账号不能为空")
    @Size(min = 4, max = 11, message = "账号必须为4到11位")
    @Pattern(regexp = "^[^@\\s]+$", message = "账号不能包含@符号和空格")
    @Pattern(regexp = "^[^@\\s\\u4e00-\\u9fa5]+$", message = "账号不能包含@符号、空格和中文字符")
    private String account;

    /**
     * 电子邮件地址，不能为空且唯一
     */
    @NotBlank(message = "电子邮件不能为空")
    private String email;



    /**
     * 确认密码
     */
    private String confirmPassword;

    /**
     * 用户性别，M:男, F:女, O:其他
     */
    private String gender;


    /**
     * 用户联系电话
     */
    private String phone;

    /**
     * 用户注册时间，默认为当前时间戳
     */
    private LocalDateTime createdAt;

    /**
     * 用户信息最后更新时间，默认为当前时间戳
     */
    private LocalDateTime updatedAt;

    private LocalDateTime accountExpirationDate;
    /**
     * 状态
     */
    private int status;

    /**
     * 用户角色
     */
    private String userRole;

    /**
     * 验证码
     */
    private String captcha;
}
